Bahasa Assembly adalah bahasa pemrograman tingkat rendah.
Bahasa pemrograman (bahasa komputer/ pemrograman komputer),
adalah instruksi standar untuk memerintah komputer.
Bahasa pemrograman ini merupakan suatu himpunan dari aturan sintaks dan
semantik yang dipakai untuk mendefinisikan program komputer.
Bahasa ini memungkinkan seorang programmer dapat menentukan secara persis data
mana yang akan diolah oleh komputer,
bagaimana data ini akan disimpan/diteruskan, dan jenis langkah apa secara
persis yang akan diambil dalam berbagai situasi.
Menurut tingkat kedekatannya dengan mesin komputer, bahasa pemrograman terdiri dari:
Bahasa Mesin, yaitu memberikan perintah kepada komputer dengan memakai kode bahasa biner, contohnya 01100101100110
Bahasa Tingkat Rendah, atau dikenal dengan istilah bahasa rakitan (bah.Inggris Assembly), yaitu memberikan perintah kepada komputer dengan memakai kode-kode singkat (kode mnemonic), contohnya kode_mesin|MOV, SUB, CMP, JMP, JGE, JL, LOOP, dsb.
Bahasa Tingkat Menengah, yaitu bahasa komputer yang memakai campuran instruksi dalam kata-kata bahasa manusia (lihat contoh Bahasa Tingkat Tinggi di bawah) dan instruksi yang bersifat simbolik, contohnya {, }, ?, <<, >>, &&, ||, dsb.
Bahasa Tingkat Tinggi, yaitu bahasa komputer yang memakai instruksi berasal dari unsur kata-kata bahasa manusia, contohnya begin, end, if, for, while, and, or, dsb. Komputer dapat mengerti bahasa manusia itu diperlukan program compiler atau interpreter.
Sebagian besar bahasa pemrograman digolongkan sebagai Bahasa Tingkat Tinggi, hanya bahasa C yang digolongkan sebagai Bahasa Tingkat Menengah dan Assembly yang merupakan Bahasa Tingkat Rendah.
Beberapa kelebihan Assembler:
Target Penguasaan Materi Assembler adalah:
1. Peserta memahami konstruksi program assembly
2. Peserta memahami proses kerja assembly
3. Peserta dapat menggunakan berbagai jenis mnemonik
4. Peserta dapat menggunakan assembler directive sbb:
1. ADD ADD 2. ADD WITH CARRY ADC 3. SUB WITH BORROW SBB 4. INCREMENT INC 5. DECREMENT DEC 6. MULTIPLY MUL 7. DEVIDE DIV 8. AND LOGIC ANL 9. OR LOGIC ORL 10. EXLUSIVE OR LOGIK XRL 11. DECIMAL ADJUST ACCUMULATOR DAA 12. CLEAR ACCUMULATOR CLR A 13. COMPLEMENT ACCUMULATOR CPL A 14. ROTATE ACCUMULATOR LEFT RLA 15. ROTATE ACCUMULATOR LEFT THROUGH CARRY RLCA 16. ROTATE ACCUMULATOR RIGHT RRA 17. ROTATE ACCUMULATOR RIGHT THROUGH CARRY RRCA 18. SWAPP NIBBLE WITHIN ACCUMULATOR SWAP 19. PUSH DIRECT BYTE KE STACK PUSH 20. POP DIRECT BYTE DARI STACK POP 21. JUMP IF CARRY SET C=1 JC 22. JUMP IF CARRY NOT SET C = 0 JNC 23. JUMP IF DIRECT BIT SET JB 24. JUMP IF DIRECT BIT NOT SET JNB 25. JUMP IF DIRECT BIT SET & CLEAR BIT JBC 26. ABSOLUTE CALL ACALL 27. LONG CALL LCALL 28. RETURN RET 29. RETURN FROM INTERRUPT RETI 30. ABSOLUTE JUMP AJMP 31. LONG JUMP LJMP 32. SHORT JUMP SJMP 33. JUMP INDIRECT JMP 34. JUMP IF ACCUMULATOR ZERRO JZ 35. JUMP IF ACCUMULATOT NOT ZERRO JNZ 36. COMPARE AND JUMP IF NOT EQUAL CJNE 37. DECREAMENT AND JUMP IF NOT ZERO DJNZ 38. NO OPERATION NOP
NB:
Lama Belajar 5 Hari @ 3jam
Kelas Minimal 2 Orang
Jika Membawa Laptop Sendiri Harus Sudah Terinstall Program
.MODEL SMALL .CODE ORG 100H AWAL: MOV CL,30H JMP PROSES KAL0 DB 'Ketikkan satu kalimat:$' KAL1 DB 13,10,'Kalimat yang diinput adalah:$' KAL2 DB 13,10,'Cetak dari belakang:$',13,10 KAL3 DB 13,10,'panjang string adalah:$' KALX DB 13,10,'$' KAL4 DB 13,10,'Jumlah Huruf Vokal:$' KAL5 DB 13,10,'Jumlah Huruf Konsonan:$' KATA DB 20,?,20 DUP (?) VOKAL: INC CL JMP PLUS PROSES: ;= CETAK STRING = MOV AH,09H MOV DX,OFFSET KAL0 INT 21H ;= INPUT STRING = MOV AH,0AH LEA DX,KATA INT 21H ;=CETAK STRING = MOV AH,09H MOV DX,OFFSET KAL1 INT 21H ;= CETAK VARIABEL STRING DG MODEL COMPARASI = MOV BX,OFFSET KATA+2 CETAK: MOV DL,[BX] CMP DL,0DH JE BELAKANG MOV AH,02H INT 21H CMP DL,'a' JE VOKAL CMP DL,'i' JE VOKAL CMP DL,'u' JE VOKAL CMP DL,'e' JE VOKAL CMP DL,'o' JE VOKAL CMP DL,'A' JE VOKAL CMP DL,'I' JE VOKAL CMP DL,'U' JE VOKAL CMP DL,'E' JE VOKAL CMP DL,'O' JE VOKAL PLUS:INC BX JMP CETAK ;= CETAK KATA DARI BELAKANG = BELAKANG:MOV AH,09H MOV DX,OFFSET KAL2 INT 21H MOV AH,09H MOV DX,OFFSET KALX INT 21H CETAK1: MOV DL,[BX] CMP DL,KATA+1 JE VOKAL1 MOV AH,02H INT 21H DEC BX JMP CETAK1 ;= CETAK JUMLAH VOKAL = VOKAL1: MOV AH,09H MOV DX,OFFSET KAL4 INT 21H MOV DL,CL ;ADD DL,30H MOV AH,02H INT 21H ;= CETAK JUMLAH KONSONAN = KONSONAN: MOV AH,09H MOV DX,OFFSET KAL5 INT 21H MOV BX,OFFSET KATA+1 MOV DL,[BX] ADD DL,30H SUB DL,CL ADD DL,30H MOV AH,02H INT 21H ;= CETAK PANJANG STRING = AKHIR: MOV AH,09H MOV DX,OFFSET KAL3 INT 21H MOV BX,OFFSET KATA+1 MOV DL,[BX] ADD DL,30H MOV AH,02H INT 21H SELESAI: INT 20H END AWAL
.MODEL SMALL:memberitahu assembler berapa memori yang akan dipakai
.CODE: Mendeklarasikan bahwa bagian dibawah ini adalah instruksi program
ORG 100h: Mengatur awal dari program
TData : JMP Proses
T_ASCII DB 13,10,’ Ini adalah tombol ASCII : $’
T_Extended DB 13,10,’Ini adalah tombol Extended $’
Proses ::Deklarasi Proses
MOV AH,0: Servis Input satu karakter dan memasukan nilai 0 ke AH
INT 16h: Menjalankan
PUSH AX: Menyimpan hasil dari pembacaan pada stack
CMP AL,00: Percabangan apakah ini karakter extended ?
JE Extended: Jika Betul !, Lompat ke Extended
ASCII: Deklarasi ASCII
LEA DX,T_ASCII: Mengambil alamat T_ASCII
MOV AH,09: Memasukan nilai 09 ke AH
INT 21h: Cetak kalimat !
POP AX: Mengambil kembali nilai AX pada stack
MOV DL,AL: Mengambil kode ASCII yang ditekan, Menduplikasikan isi register AL ke DL
MOV AH,2: Memasukan Nilai 2 ke AH
INT 21h: Cetak karakter !
CMP AL,’Q’: Apakah yang ditekan huruf ‘Q’ ?
JE exit: Jika Betul !, lompat ke Exit
CMP AL,’q’: Apakah yang ditekan huruf ‘q’ ?
JE exit: Jika betul !, lompat ke Exit
JMP Proses: Lompat ke Proses
Extended::Deklarasi Extended
LEA DX,T_Extended: Mengambil alamat T_Extended
MOV AH,09: Memasukan nilai 09 ke AH
INT 21h: Cetak dan menampilkan kalimat !
JMP Proses: Lompat ke Proses
exit: INT 20h: Pengembalian Nilai ke DOS !
END TData: Program Selesai !
Reff Contoh diambil dari: https://oferiachacha.blogspot.com
Addressing Memory /Label Mnemonic instruksi: ADD, MOV, INC dan lain-lain. Assembler Declare : ORG, EQU, DB dan lain-lain. Operand: MOV, JNB, JNBI Instruction & Implementation: ADD A,Rn Menambah isi register Rn dengan isi akumulator lalu disimpan di akumulator ADD A,R1 ADD A, direct Menambah isi direct dengan akumulator, hasilnya disimpan di akumulator ADD A, 30H ADD A, #data Menambahkan immediate data ke akumulator ADD A, #20H ADD A, @Rn Menambahkan isi dari alamat yang ditunjuk Rn dengan akumulator ADD A, @R1 ADDC A, #data Menambahkan immediate data ke akumulator dengan carry ADDC A, #20H SUBB A, Rn Kurangkan isi register Rn dari akumulator SUBB A, R1 INC A Tambah isi akumulator dengan 1 INC A DEC A Kurangkan isi akumulator denga 1 DEC A MUL AB Kalikan isi A dengan isi B, low-byte disimpan pada akumulator, dan high byte pada B MUL AB DIV AB Bagi isi A dengan isi B. Akumulator menerima hasil integer pembagian dan B menerima integer sisanya. DIV AB Logic Instruction yaitu operasi AND (instruksi ANL), operasi OR (instruksi ORL), operasi Exclusive-OR (instruksi XRL), operasi clear (instruksi CLR), instruksi komplemen (instruksi CPL), operasi penggeseran kanan atau kiri (instruksi RR, RRC, RL dan RLC) serta operasi penukaran data (instruksi SWAP). Data Movement and Addressing MOV A, Rn Memindahkan isi register Rn ke akumulator MOV A, R0 MOV A,direct Memindahkan isi direct byte ke akumulator MOV A, 30h MOV A , #data Mengisi akumulator dengan nilai data MOV A,#20h MOV A, @Rn Mengisi akumulator dengan isi dari alamat yang ditunjuk oleh Rn MOV A, @R0 Direct Addressing MOV A,30H ; isi akumulator dengan bilangan 30 heksadesimal InDirect Addressing ADD A,R ; Tambahkan isi RAM yang lokasinya ditunjukan oleh register R1 ke akumulator. DEC @R1 ; Kurangi satu isi RAM yang alamatnya ditunjukan oleh register R1. Binary Addressing MOV A,#20H ; isi akumulator dengan bilangan 20 heksadesimal Port Addressing MOV P1,A ; isi P1 dari nilai akumulator. Bit Addressing SETB P1.7 ; set bit port 1.7 high ( pot 1.7 diberi nilai logika 1)Implementation Assembly to Microcontroller